package homework.xuluoxi;

/*
 * 作业名称：实体类和接口 - 测试类
 * 作业功能：实现实体类和接口
 * 学    员：徐罗希
 * 版    本：V1.0
 * 备    注：模块二作业
 */

import java.util.concurrent.Callable;

public class MobilePhoneTest {

    public static void main(String[] args){
        // 1、购买手机卡并开设帐户
        System.out.println("1、购买手机卡并开设帐户");
        CardTypeEnum cardType = CardTypeEnum.MICRO;
        Card myCard = new Card(cardType, "MP0005789962", "张三", "abcd1234", 0, 0, 0);
        System.out.println();

        // 2、查看手机卡信息
        System.out.println("2、查看手机卡信息");
        myCard.show();
        System.out.println();

        // 3、手机充值200并再次查看手机卡信息
        System.out.println("3、手机充值200并再次查看手机卡信息");
        myCard.setAccountBalance(200);
        myCard.show();
        System.out.println();

        // 4、选购通话套餐、上网套餐
        System.out.println("4、选购通话套餐、上网套餐");
        Package pkg1 = new CallPackage(30, 180, 50);
        Package pkg2 = new OnlinePackage(50, 3);
        myCard.setAccountBalance(200 - 30 - 50);
        System.out.println();

        // 5、查看选购的套餐信息
        System.out.println("5、查看选购的套餐信息");
        pkg1.show();
        pkg2.show();
        System.out.println();

        // 6、一段时间过后，通话时间已使用62分钟，流量已使用1.3G
        System.out.println("6、一段时间过后，通话时间已使用62分钟，流量已使用1.3G");
        CallPackage cPkg = (CallPackage) pkg1;
        cPkg.setTalkTime(180 - 62);
        OnlinePackage oPkg = (OnlinePackage) pkg2;
        oPkg.setNetFlow(3 * 1.0 - 1.3);
        ConsumerInformation cI = new ConsumerInformation(cPkg.getTalkTime(), oPkg.getNetFlow(), myCard.getAccountBalance());
        System.out.println();

        // 7、利用手机消费服务查看手机套餐状态以及余额
        System.out.println("7、利用手机消费服务查看手机套餐状态以及余额");
        cI.show();
        System.out.println();
    }
}
